import {Key} from 'react'


//引入拦截器中axios实例，在这里发送医院列表的请求
import { request } from "@/utils/http";
import { isImportTypeNode } from "typescript";
//引入类型定义
import type {
    getHospitalListParamsType,
    getHosListReturnType,
    addHospitalParamType,
    getHosListItemType,
    upHosSetType
} from './model/hospitalSetType'

//创建请求函数并暴露，参数为请求需要的参数，直接解构调用时传值

//一般定义请求数据的类型和接受的类型 
//get列表数据请求
export const getHospitalListRequest = ({page,limit,hosname,hoscode}:getHospitalListParamsType)=>{

    //返回请求,request.get需要定义两个类型，第一个是any（暂定），第二个是返回值类型
    return request.get<any,getHosListReturnType>(`/admin/hosp/hospitalSet/${page}/${limit}`,{
        //请求时可选参数
        params:{
            hosname,
            hoscode
    }} 
 )
}


// 2、添加数据请求,数据这个对象由调用时传递
//对传递的data进行类型的定义
export const addHospitalRequest =(data:addHospitalParamType)=>{
    //post请求返回值类型时null，
    return request.post<any,null>('/admin/hosp/hospitalSet/save',data)
}

//3、修改时根据id拿到数据渲染
export const getIdHospitalRequest = (id:string)=>{
    //这里的返回值类型时id对应每一项的参数
    return request.get<any,getHosListItemType>(`/admin/hosp/hospitalSet/get/${id}`)
}


//4、修改医院更新信息,这里需要传入id和基础数据，因为之前定义过新增数据的类型，而这里只是多个id，所以去继承类型
export const UpHosSetFromRequest = (data:upHosSetType)=>{
    //发送更新请求
    return request.put('/admin/hosp/hospitalSet/update',data)
}

//5、删除医院接口，传入id
export const deleteHospitalRequest = (id:number)=>{

    return request.delete<any,null>(`/admin/hosp/hospitalSet/remove/${id}`)
}

//6、批量删除医院数据
export const BatchDeleteHosRequest = (ids:Key[])=>{

    return request.delete<any,null>('/admin/hosp/hospitalSet/batchRemove',{
        data:ids
    })
}